﻿using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Controller : MonoBehaviour {
	public GameObject carta;
	public GameObject barajaaux;
	public GameObject champ;

	public GameObject punio;
	public GameObject bateria;
	public GameObject corazon;

	public GameObject punio2;
	public GameObject bateria2;
	public GameObject corazon2;
	
	//public GameObject champdummie;
	public GameObject dummie;
	//public GameObject jugado; //la ultima carta jugada
	WebServices web;
	private static PhotonView ScenePhotonView;
	bool jugando = false;

	string prueba="";
	string palabraReversar="";
	string textoCuadro="";
	public bool paraTexto=false;
	public bool semaforo=true;
	public string respuesta="";

	//Arrays
	List<int> baraja;//baraja
	List<GameObject> mano;//mi mano arreglo de game object
	List<GameObject> manoDummie;
	List<GameObject> cartasEnCampo;//mis cartas en juego
	List<GameObject> itemes;//mis itemes en juego
	//List<GameObject> pila; //mi pila o basura
	//List<GameObject> cementerio; //cartas en cementerio
	
	//Variables necesarios
	public int fase;
	int posBaraja;//indice de la carta en el tope de la baraja
	int posMano; //indice de la carta en el tope de la mano
	int posManoDummie;
	public int vida;
	int staminaTurno;
	public int staminaActual;
	int fuerza=0;
	int fuerzaBase=0;
	string url="";
	public int playerID;
	int fuerzaAux;
	//arreglo que contiene las coordenadas de las cartas
	float[,] coordenadas= new float[,]{{-6.244741f,-10.87833f},{-4.671245f,-10.21262f},{-2.656195f,-9.754649f},{-0.9159298f,-9.573092f},
		{1.099114f,-9.571462f},{2.994747f,-9.754649f},{4.749801f,-10.11776f},{6.323297f,-10.72295f}};
	public void pasarJugado(int fuerza){
		fuerzaAux = fuerza;
	}
	void Start () {
		AudioSource audioSource = gameObject.AddComponent<AudioSource>();
		audioSource.clip = Resources.Load("sonidos/fondo") as AudioClip;
		audioSource.loop = true;
		audioSource.volume = 2f;
		audioSource.Play ();

		web = gameObject.GetComponent<WebServices> ();
		Connect ();

		ScenePhotonView = this.GetComponent<PhotonView>();
		posMano=0;
		posManoDummie = 0;
		baraja= new List<int>{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
		mano=new List<GameObject>();
		//pila = new List<GameObject>();
		//cementerio= new List<GameObject>();
		manoDummie = new List<GameObject> ();
		posBaraja=baraja.Count-1;
		fase=0;
		//for ( int a =0; a <baraja.Count;a++) print(baraja[a]+" "); 
		//baraja.Add(21);//agregar carta
		//baraja.Pop();//eliminar carta en tope
		//print(baraja[3]);
		//baraja.RemoveAt(3); //eliminar carta en posicion
		
		//print(baraja[3]);
		//print(baraja[posBaraja]);
		
		
		//for (var a  in baraja) print(a+" "); //asi se declara la baraja y definen sus atributos.
		
		
		//print("\n");
		shuffle(baraja);
		//for ( int a =0; a <baraja.Count;a++) print(baraja[a]+" "); 
		
	}
	
	void FixedUpdate () {//main del juego
		/*Se encarga de bloquear ciertos elementos. O se encarga de almacenar la fase actual para que los
		demas objetos accedan a su variable fase y de acuerdo a su valor puedan ejecutarse o no*/

		if (jugando) {
			if(vida<=0){

			}
			if(fase==7 && vida>0){
				Application.LoadLevel("juego");
			}
			else if(fase==7){
				Application.LoadLevel("juego");
				//print("perdi");
			}
		}
		prueba = vida.ToString();
		
	}
	public void CurarChamp(int plusVida){
		vida += plusVida;
		if(playerID==1)
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,1);
		else
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,2);
		}
	public void setFuerza(int cantidad){//modifica la fuerza actual del champ y ejecuta animacion
		fuerza+=cantidad;
		//print (cantidad);
		if(playerID==1)
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,1);
		else
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,2);
		
	}
	public void recibirGolpe(int cantidad){ //cura o daña al jugador y ejecutar animacion
		vida+=cantidad;
		if (vida <= 0) {
			ScenePhotonView.RPC ("setFase", PhotonTargets.All, 7);
		}
		else {
			if(playerID==1)ScenePhotonView.RPC ("setFase", PhotonTargets.All, 1);
			else ScenePhotonView.RPC ("setFase", PhotonTargets.All, 4);
		}
		if(playerID==1)
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerzaBase,1);
		else
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerzaBase,2);
		
	}
	public void pegar(){//aplica el daño
		ScenePhotonView.RPC("enviarGolpe", PhotonTargets.Others,-(fuerza+fuerzaBase));
		if(playerID==1)
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerzaBase,1);
		else
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerzaBase,2);
		fuerza = 0;

	}
	public void stamina(int cantidad){ //aumenta o disminuye stamina
		staminaActual+=cantidad;
		if(staminaActual<=0)staminaActual=0;
		if(playerID==1)
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,1);
		else
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,2);
		
	}
	public void actualizaStamina(){
		if(playerID==1)
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,1);
		else
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,2);
	}
	public void playCard(int id,int posicion){//juega carta de la mano y ejecuta animacion
		try{
			GameObject aux;
			for(int i = posicion+1; i < mano.Count; i++){
				aux= mano[i];
				if(playerID==1)	aux.transform.position=new Vector3(coordenadas[i-1,0],coordenadas[i-1,1],-1);
				else aux.transform.position=new Vector3(coordenadas[i-1,0],-coordenadas[i-1,1],-1);
				Carta aux2=aux.GetComponent<Carta>();
				aux2.pos=i-1;
			}
			mano.RemoveAt(posicion);
			posMano = mano.Count - 1;
			ScenePhotonView.RPC("jugarCarta", PhotonTargets.Others,id);
		}
		catch{
		}

		
		
	}
	void putCardHand(){//pone una carta en la mano y hace los calculos para que quede en orden
		//calcular las coordenadas para la carta
		GameObject aux=(GameObject)Instantiate(carta,new Vector3(0,0,3),carta.transform.rotation);
		mano.Add(aux.gameObject);
		posMano=mano.Count-1;
		Carta aux2=aux.GetComponent<Carta>();
		if (playerID == 1) {
			aux.transform.position = new Vector3(12.38877f,-6.78305f,0f);
			aux.transform.rotation=Quaternion.Euler(-90,-180,-180);
			aux2.pos=mano.Count-1;
			aux2.id=baraja[posBaraja];
			aux2.x =coordenadas [mano.Count - 1, 0];
			aux2.y=coordenadas [mano.Count - 1, 1];
			aux2.Textura();

		} else {
			aux.transform.position = new Vector3(-13.48809f,7.053889f,0f);
			aux2.pos=mano.Count-1;
			aux2.id=baraja[posBaraja];
			aux2.x=coordenadas [mano.Count - 1, 0];
			aux2.y=-coordenadas [mano.Count - 1, 1];
			aux2.Textura();

		}




		return;
		
	}
	void drawDummie(){//dibuja el dummie de las manos del oponente
		GameObject aux=(GameObject)Instantiate(dummie,new Vector3(0,0,3),dummie.transform.rotation);
		manoDummie.Add(aux.gameObject);
		Dummie aux2=aux.GetComponent<Dummie>();
		if (playerID == 2) {
			aux.transform.position = new Vector3 (12.38877f, -6.78305f, -1.995804f);
			aux2.comenzarAnimacion(coordenadas [manoDummie.Count - 1, 0],coordenadas [manoDummie.Count - 1, 1],-1);
		} 
		else {
			aux.transform.position = new Vector3 (-13.48809f, 7.053889f, -1.16394f);
			aux2.comenzarAnimacion(coordenadas [manoDummie.Count - 1, 0],-coordenadas [manoDummie.Count - 1, 1],-1);
		}
		posManoDummie=manoDummie.Count-1;//verificar que sea evitable
		return;
	}
	public void discardCard(int id, int posicion){//descarta la carta en la posicion
		GameObject aux;
		for(int i = posicion+1; i < mano.Count; i++){
			aux= mano[i];
			if(playerID==1)	aux.transform.position=new Vector3(coordenadas[i-1,0],coordenadas[i-1,0],-1);
			else aux.transform.position=new Vector3(coordenadas[i-1,0],-coordenadas[i-1,0],-1);
			Carta aux2=aux.GetComponent<Carta>();
			aux2.pos=i-1;
		}
		//pila.Add(mano[posicion]);//descarto la carta
		mano.RemoveAt(posicion);//elimino la carta que estaba en la posicion a  eliminar
	}
	public void drawCard(int cantidad){//roba n cartas de la baraja, las agrega a la mano y ejecuta animacion
		//print (mano.Count);
		for(var i=0;i<cantidad;i++){
			if(mano.Count<8 && baraja.Count>0){//hasta 8 cartas
				//instanciar la nueva carta
				putCardHand();
				ScenePhotonView.RPC("robaCarta", PhotonTargets.Others);
				baraja.RemoveAt(posBaraja);		
				posBaraja--;
				
			}
			
			
			//if(posBaraja==baraja.length) fin juego
		}

		
	}

	
	void shuffle(List<int> arr){ //revuelve un arreglo (baraja, pila o cementerio)
		for (int i = arr.Count - 1; i > 0; i--) {
			int r = Random.Range(0,i);
			int tmp = arr[i];
			arr[i] = arr[r];
			arr[r] = tmp;
		}
	}
	public void Fase(int a){//setea la fase del juego
		ScenePhotonView.RPC("setFase", PhotonTargets.All,a);
	}
	public void enviaPalabra(string palabra){//envia la palabra a reversar
		print ("palabra: " + palabra);
		ScenePhotonView.RPC("reversar", PhotonTargets.Others,palabra);

	}

	IEnumerator time(int tiempo)
	{
		
		yield return new WaitForSeconds(tiempo);
		if (paraTexto) {
						if (textoCuadro!="" && textoCuadro == palabraReversar) {//si son iguales entonces envia true si no envia false
								ScenePhotonView.RPC ("destruyeManiobra", PhotonTargets.Others, true);
								print ("reversado");
						} else {
								ScenePhotonView.RPC ("destruyeManiobra", PhotonTargets.Others, false);
								print ("noreversado");
						}
						textoCuadro="";
						paraTexto = false;
						
				}

		
		
	}
	void parsea(string mistring){

	}
	void parsearChamp(string mistring){
		string[] arreglin = mistring.Split ('*');
		vida = int.Parse(arreglin [0]);
		staminaActual = int.Parse(arreglin [1]);
		staminaTurno = int.Parse (arreglin [2]);
		fuerzaBase = int.Parse (arreglin [3]);
		url = arreglin [5];
		//print (":"+url+":");


	}

	/*Seccion de conexion
	 Se encarga de mantener el estado coherente y manejar los eventos*/	

	void Connect(){
		PhotonNetwork.ConnectUsingSettings ("Celebrity Brawl v1");
		
	}
	void OnJoinedLobby(){
		PhotonNetwork.JoinRandomRoom();
	}
	void OnPhotonRandomJoinFailed(){
		PhotonNetwork.CreateRoom (null,true,true,2);
		
	}

	IEnumerator OnJoinedRoom(){//inicializa el juego

		playerID = PhotonNetwork.player.ID;



		if (playerID == 2) {//soy player 2
			Camera.main.transform.rotation= Quaternion.Euler(0f,0f,180f);
			//crear baraja en pos player 2
			Instantiate (barajaaux,new Vector3(-13.48809f,7.053889f,-1.16394f),barajaaux.transform.rotation);
			Instantiate (dummie,new Vector3(12.38877f,-6.78305f,-1.995804f),dummie.transform.rotation);

			//Instantiate (champ,new Vector3(-0.08441257f,2.89532f,-1.16394f),barajaaux.transform.rotation);

			semaforo=true;
			StartCoroutine(web.getAllChamp("2"));
			while(semaforo)
				yield return new WaitForSeconds(0.1f);
			parsearChamp(web.respuesta);
			GameObject campeon=PhotonNetwork.Instantiate("Champ2",new Vector3(-0.46f,3.2f,-1.16394f), champ.transform.rotation, 0);
			Champ aux=campeon.GetComponent<Champ>();
			aux.textura(url);
			Instantiate (barajaaux,new Vector3(12.38877f,-6.78305f,-1.995804f),barajaaux.transform.rotation);

			corazon=(GameObject)Instantiate (corazon,new Vector3(16.7f,1.29f,-3f),corazon2.transform.rotation);

			bateria=(GameObject)Instantiate (bateria,new Vector3(16.7f,4.3f,-3f),bateria2.transform.rotation);
			//bateria2.transform.rotation=Quaternion.Euler (0,0,180);
			punio=(GameObject)Instantiate (punio,new Vector3(16.7f,7.3f,-3f),punio2.transform.rotation);
			//punio2.transform.rotation=Quaternion.Euler (0,0,180);

			corazon2=(GameObject)Instantiate (corazon2,new Vector3(-16.7f,-4.3f,-3f),corazon.transform.rotation);
			//corazon.transform.rotation=Quaternion.Euler (0,0,180);
			bateria2=(GameObject)Instantiate (bateria2,new Vector3(-16.7f,-1.1f,-3f),bateria.transform.rotation);
			//bateria.transform.rotation=Quaternion.Euler(0,0,180);
			punio2=(GameObject)Instantiate (punio2,new Vector3(-16.7f,2.2f,-3f),punio.transform.rotation);
			//punio.transform.rotation=Quaternion.Euler (0,0,180);
			ScenePhotonView.RPC("enviarTexturaChamp", PhotonTargets.Others,url,2);

			//avisar que se conecto
			ScenePhotonView.RPC("aJugar", PhotonTargets.All);
			//ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,2);

		} 
		else {//soy player 1
			//crear baraja
			Instantiate (barajaaux,new Vector3(12.38877f,-6.78305f,-1.995804f),barajaaux.transform.rotation);

			GameObject aux2;
			aux2=(GameObject)Instantiate (corazon,new Vector3(16.7f,7.3f,-3f),corazon.transform.rotation);
			aux2.transform.rotation=Quaternion.Euler(0,0,0);
			corazon=aux2;
			aux2=(GameObject)Instantiate (bateria,new Vector3(16.7f,4.3f,-3f),bateria.transform.rotation);
			aux2.transform.rotation=Quaternion.Euler(0,0,0);
			bateria=aux2;
			aux2=(GameObject)Instantiate (punio,new Vector3(16.7f,1.29f,-3f),punio.transform.rotation);
			aux2.transform.rotation=Quaternion.Euler(0,0,0);
			punio=aux2;
			aux2=(GameObject)Instantiate (corazon2,new Vector3(-16.5f,2.2f,-3f),corazon2.transform.rotation);
			aux2.transform.rotation=Quaternion.Euler(0,0,0);
			corazon2=aux2;
			aux2=(GameObject)Instantiate (bateria2,new Vector3(-16.5f,-1.1f,-3f),bateria2.transform.rotation);
			aux2.transform.rotation=Quaternion.Euler(0,0,0);
			bateria2=aux2;
			aux2=(GameObject)Instantiate (punio2,new Vector3(-16.5f,-4.2f,-3f),punio2.transform.rotation);
			aux2.transform.rotation=Quaternion.Euler(0,0,0);
			punio2=aux2;
			//Instantiate (dummie,new Vector3(-13.48809f,7.053889f,-1.96394f),dummie.transform.rotation);
			//Instantiate (champ,new Vector3(0.08049393f,-2.592282f,-1.16394f),barajaaux.transform.rotation);
			semaforo=true;
			StartCoroutine(web.getAllChamp("1"));
			while(semaforo)
				yield return new WaitForSeconds(0.1f);
			parsearChamp(web.respuesta);
			GameObject campeon=PhotonNetwork.Instantiate("Champ",new Vector3(-0.46f,-2.59f,-1.16394f), champ.transform.rotation, 0);
			Champ aux=campeon.GetComponent<Champ>();
			aux.textura(url);
			ScenePhotonView.RPC("enviarTexturaChamp", PhotonTargets.Others,url,1);
			//ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,1);
			//crear baraja dummie
		}

	}
	void OnGUI(){
		GUILayout.Label (PhotonNetwork.connectionStateDetailed.ToString ());
		//GUILayout.Label (prueba);
		//GUILayout.Label (staminaActual.ToString());
		Event e = Event.current;
		if (e.keyCode == KeyCode.Return&&paraTexto) {
			//print (textoCuadro);
			if(textoCuadro != "" && textoCuadro==palabraReversar){//si son iguales entonces envia true si no envia false
				ScenePhotonView.RPC("destruyeManiobra", PhotonTargets.Others,true);
				//print ("reversado");
			}
			else{
				ScenePhotonView.RPC("destruyeManiobra", PhotonTargets.Others,false);
				//print ("noreversado");
			}
			textoCuadro="";
			paraTexto = false;

		} else if (paraTexto) {
			//StartCoroutine(time (3));
			GUI.Box (new Rect (Screen.width / 2 - 60, Screen.height / 2 - 105, 200, 70), "Escribe: "+palabraReversar);
			if (GUI.Button (new Rect (Screen.width / 2 + 60, Screen.height / 2 - 80, 60, 20), "Enviar")) {
				paraTexto = false;
				if(textoCuadro!="" && textoCuadro==palabraReversar){//si son iguales entonces envia true si no envia false
					ScenePhotonView.RPC("destruyeManiobra", PhotonTargets.Others,true);
					print ("reversado");
				}
				else{
					ScenePhotonView.RPC("destruyeManiobra", PhotonTargets.Others,false);
					print ("noreversado");
				}
				textoCuadro="";
				//print (textoCuadro);
				/*aux = false;
				ighscoreURL = "http://cresta.cl/menu/login.php?var1=" + firstName;
				print (highscoreURL);
				StartCoroutine (GetScores ()); */
				}
				GUI.SetNextControlName ("input");
				textoCuadro = GUI.TextField (new Rect (Screen.width / 2 - 45, Screen.height / 2 - 80, 90, 20), textoCuadro);
				GUI.FocusControl ("input");

		}

		
	}
	public void pegarAccion(int dano){//aplica el daño
		ScenePhotonView.RPC("enviarGolpeAccion", PhotonTargets.Others,dano);
		
	}
	
	public void recibirGolpeAccion(int cantidad){ //cura o daña al jugador y ejecutar animacion
		vida-=cantidad;	
		/*if(playerID==1)
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerzaBase,1);
		else
			ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerzaBase,2);*/

	}
	public void reduceStamina(int dano){//aplica el daño
		ScenePhotonView.RPC("reducStamina", PhotonTargets.Others,dano);
		
	}
	public void staminaReducida(int aux){ //cura o daña al jugador y ejecutar animacion
		staminaActual = 0;		
	}
	/*Seccion RPC*/
	[RPC]
	void ejecutarCarta(int id){//ejecuta la carta


	}
	[RPC] 
	void actualizarContadores(int vida, int stamina, int fuerza, int player){
		if(player==1){
			corazon.transform.FindChild("texto").GetComponent<TextMesh>().text=vida.ToString();
			bateria.transform.FindChild("texto").GetComponent<TextMesh>().text=stamina.ToString();
			punio.transform.FindChild("texto").GetComponent<TextMesh>().text=fuerza.ToString();

		}
		else{
			corazon2.transform.FindChild("texto").GetComponent<TextMesh>().text=vida.ToString();
			bateria2.transform.FindChild("texto").GetComponent<TextMesh>().text=stamina.ToString();
			punio2.transform.FindChild("texto").GetComponent<TextMesh>().text=fuerza.ToString();
		}
	}
	[RPC]
	void enviarTexturaChamp(string text, int tipo){
		if (tipo == 1) {
			//print ("champ");
			GameObject.FindGameObjectWithTag("champ").GetComponent<Champ>().textura(text);

		} else {
			//print ("champ2");
			GameObject.FindGameObjectWithTag("champ2").GetComponent<Champ>().textura(text);
			ScenePhotonView.RPC("enviarTexturaChamp", PhotonTargets.Others,url,1);
		
		}

	}

	[RPC]
	void reversar(string palabra){
		//ejecutar ingresar palabra con timer
		//llamar al metodo
		palabraReversar = palabra;
		paraTexto = true;
		StartCoroutine(time (3));
		//print ("palabra a reversar: " + palabra);


	}
	[RPC]
	void destruyeManiobra(bool reversado){
		if (reversado) {
			fuerzaAux=0;	//destruye la carta recien jugada
		} else {

			setFuerza(fuerzaAux);
			fuerzaAux=0;

		}
		if(playerID==1){
			ScenePhotonView.RPC ("setFase", PhotonTargets.All,2);
		}
		else{
			ScenePhotonView.RPC ("setFase", PhotonTargets.All,5);
		}
		
	}
	[RPC]
	void setFase(int nuevafase){
		fase = nuevafase;
		if (fase == 1 && playerID == 1)
						staminaActual += staminaTurno;
		if (fase == 4 && playerID == 2)
						staminaActual += staminaTurno;
		//print ("fase actual: " + nuevafase);
	}
	[RPC]
	void jugarCarta(int id){ //ejecutar dummie
		print ("entre");
		if (playerID == 1) {
			//quitar una carta de la mano dummie
			Destroy (manoDummie[manoDummie.Count-1]);
			manoDummie.RemoveAt(manoDummie.Count-1);

			//crear dummie en campo
		} else {
			//crear dummie
			//quitar una carta de la mano dummie
			Destroy (manoDummie[manoDummie.Count-1]);
			manoDummie.RemoveAt(manoDummie.Count-1);
			//crear dummie en campo
		}

	}
	[RPC]
	void robaCarta(){
		drawDummie();
	}
	[RPC]
	void manoInicial(){
		for (int i=0; i<8; i++) {
			drawCard (1);
		}
	}
	[RPC]
	void aJugar(){
		jugando = true;
		prueba = "jugando";

		if (playerID == 2) {
						GameObject.FindGameObjectWithTag ("champ").transform.rotation = Quaternion.Euler (-90, 0, 0);
						GameObject.FindGameObjectWithTag ("champ2").transform.rotation = Quaternion.Euler (-90, 0, 0);
						
					ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,2);
				} else {
					ScenePhotonView.RPC("actualizarContadores", PhotonTargets.All,vida,staminaActual,fuerza+fuerzaBase,1);
				}
		//avisar para robar mano inicial
		for (int i=0; i<5; i++) {
				drawCard (1);
		}
		
		fase = 1;
	}
	[RPC]
	void enviarGolpe(int cant){

		recibirGolpe (cant);

	}
	[RPC]
	void enviarGolpeAccion(int cant){
		recibirGolpeAccion (cant);
		
	}
	[RPC]
	void reducStamina(int cant){
		staminaReducida (cant);
		
	}

	/*Fin seccion conexion*/
}
